package com.example.adapter

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.example.R
import com.example.entity.Planet

/**
 * RecycleViewAdapterAdapter 用于将 Planet 数据绑定到 RecyclerView 条目中。
 *
 * @param context 上下文对象，用于加载布局
 * @param list 数据列表，包含 Planet 对象
 */
class RecycleViewAdapterAdapter(
    private val context: Context,
    private val list: MutableList<Planet>
) : RecyclerView.Adapter<RecycleViewAdapterAdapter.ItemViewHolder>() {

    /**
     * ViewHolder 用于保存每个条目布局的视图引用，方便数据绑定
     */
    inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val ivIcon: ImageView = itemView.findViewById(R.id.iv_base_icon)
        val tvTitle: TextView = itemView.findViewById(R.id.tv_base_title)
        val tvContent: TextView = itemView.findViewById(R.id.tv_base_content)

        fun bind(planet: Planet) {
            // 如果 planet.getIcon() 为 null，则传入 0（不显示图片）
            ivIcon.setImageResource(planet.icon ?: 0)
            tvTitle.text = planet.title
            tvContent.text = planet.content
        }
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
        // 使用 context 来获取 LayoutInflater 并加载布局文件 item_base.xml
        val view = LayoutInflater.from(context).inflate(R.layout.item_base, parent, false)
        return ItemViewHolder(view)
    }

    override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
        // 获取当前位置的 Planet 对象，并绑定到 ViewHolder 上
        val planet = list[position]
        holder.bind(planet)
    }

    override fun getItemCount(): Int = list.size
}
